package tsing.javase.designpattern.responsebility;


/**
 * 责任链的抽象类
 */
public abstract class ApprovalHandler {

    /**
     * 责任链中的下一个处理对象
     */
    protected ApprovalHandler next;

    /**
     * 设置下一个处理对象
     *
     * @param approvalHandler
     */
    public void nextHandler(ApprovalHandler approvalHandler) {
        this.next = approvalHandler;
    }

    /**
     * 处理
     * HandleContext:责任链上下文对象
     *
     */
    public abstract void approval(HandleContext context);


    /**
     * 调用下一个处理对象

     */
    protected void invokeNext(HandleContext context) {
        if (next != null && context.getFlag()) {
            next.approval(context);
        }
    }

}
